1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.purple.connection; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 import derelict.glib.gslist; 35 import derelict.purple.plugin; 36 import derelict.purple.account; 37 import derelict.purple.sslconn; 38 import core.stdc.time; 39 40 extern (C): 41 42 alias _PurpleConnection PurpleConnection; 43 alias _Anonymous_0 PurpleConnectionFlags; 44 alias _Anonymous_1 PurpleConnectionState; 45 alias _Anonymous_2 PurpleConnectionError; 46 alias _Anonymous_3 PurpleConnectionErrorInfo; 47 alias _Anonymous_4 PurpleConnectionUiOps; 48 49 enum _Anonymous_0 50 { 51 PURPLE_CONNECTION_HTML = 1, 52 PURPLE_CONNECTION_NO_BGCOLOR = 2, 53 PURPLE_CONNECTION_AUTO_RESP = 4, 54 PURPLE_CONNECTION_FORMATTING_WBFO = 8, 55 PURPLE_CONNECTION_NO_NEWLINES = 16, 56 PURPLE_CONNECTION_NO_FONTSIZE = 32, 57 PURPLE_CONNECTION_NO_URLDESC = 64, 58 PURPLE_CONNECTION_NO_IMAGES = 128, 59 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 256, 60 PURPLE_CONNECTION_SUPPORT_MOODS = 512, 61 PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES = 1024 62 } 63 64 enum _Anonymous_1 65 { 66 PURPLE_DISCONNECTED = 0, 67 PURPLE_CONNECTED = 1, 68 PURPLE_CONNECTING = 2 69 } 70 71 enum _Anonymous_2 72 { 73 PURPLE_CONNECTION_ERROR_NETWORK_ERROR = 0, 74 PURPLE_CONNECTION_ERROR_INVALID_USERNAME = 1, 75 PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED = 2, 76 PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE = 3, 77 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT = 4, 78 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR = 5, 79 PURPLE_CONNECTION_ERROR_NAME_IN_USE = 6, 80 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS = 7, 81 PURPLE_CONNECTION_ERROR_CERT_NOT_PROVIDED = 8, 82 PURPLE_CONNECTION_ERROR_CERT_UNTRUSTED = 9, 83 PURPLE_CONNECTION_ERROR_CERT_EXPIRED = 10, 84 PURPLE_CONNECTION_ERROR_CERT_NOT_ACTIVATED = 11, 85 PURPLE_CONNECTION_ERROR_CERT_HOSTNAME_MISMATCH = 12, 86 PURPLE_CONNECTION_ERROR_CERT_FINGERPRINT_MISMATCH = 13, 87 PURPLE_CONNECTION_ERROR_CERT_SELF_SIGNED = 14, 88 PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR = 15, 89 PURPLE_CONNECTION_ERROR_OTHER_ERROR = 16 90 } 91 92 struct _Anonymous_3 93 { 94 PurpleConnectionError type; 95 char* description; 96 } 97 98 struct _Anonymous_4 99 { 100 void function (PurpleConnection*, const(char)*, size_t, size_t) connect_progress; 101 void function (PurpleConnection*) connected; 102 void function (PurpleConnection*) disconnected; 103 void function (PurpleConnection*, const(char)*) notice; 104 void function (PurpleConnection*, const(char)*) report_disconnect; 105 void function () network_connected; 106 void function () network_disconnected; 107 void function (PurpleConnection*, PurpleConnectionError, const(char)*) report_disconnect_reason; 108 void function () _purple_reserved1; 109 void function () _purple_reserved2; 110 void function () _purple_reserved3; 111 } 112 113 struct _PurpleConnection 114 { 115 PurplePlugin* prpl; 116 PurpleConnectionFlags flags; 117 PurpleConnectionState state; 118 PurpleAccount* account; 119 char* password; 120 int inpa; 121 GSList* buddy_chats; 122 void* proto_data; 123 char* display_name; 124 guint keepalive; 125 gboolean wants_to_die; 126 guint disconnect_timeout; 127 time_t last_received; 128 } 129 130 version(Derelict_Link_Static) 131 { 132 extern( C ) nothrow 133 { 134 void purple_connection_new(PurpleAccount* account, gboolean regist, const(char)* password); 135 void purple_connection_new_unregister(PurpleAccount* account, const(char)* password, PurpleAccountUnregistrationCb cb, void* user_data); 136 void purple_connection_destroy(PurpleConnection* gc); 137 void purple_connection_set_state(PurpleConnection* gc, PurpleConnectionState state); 138 void purple_connection_set_account(PurpleConnection* gc, PurpleAccount* account); 139 void purple_connection_set_display_name(PurpleConnection* gc, const(char)* name); 140 void purple_connection_set_protocol_data(PurpleConnection* connection, void* proto_data); 141 PurpleConnectionState purple_connection_get_state(const(PurpleConnection)* gc); 142 PurpleAccount* purple_connection_get_account(const(PurpleConnection)* gc); 143 PurplePlugin* purple_connection_get_prpl(const(PurpleConnection)* gc); 144 const(char)* purple_connection_get_password(const(PurpleConnection)* gc); 145 const(char)* purple_connection_get_display_name(const(PurpleConnection)* gc); 146 void* purple_connection_get_protocol_data(const(PurpleConnection)* connection); 147 void purple_connection_update_progress(PurpleConnection* gc, const(char)* text, size_t step, size_t count); 148 void purple_connection_notice(PurpleConnection* gc, const(char)* text); 149 void purple_connection_error(PurpleConnection* gc, const(char)* reason); 150 void purple_connection_error_reason(PurpleConnection* gc, PurpleConnectionError reason, const(char)* description); 151 void purple_connection_ssl_error(PurpleConnection* gc, PurpleSslErrorType ssl_error); 152 gboolean purple_connection_error_is_fatal(PurpleConnectionError reason); 153 void purple_connections_disconnect_all(); 154 GList* purple_connections_get_all(); 155 GList* purple_connections_get_connecting(); 156 void purple_connections_set_ui_ops(PurpleConnectionUiOps* ops); 157 PurpleConnectionUiOps* purple_connections_get_ui_ops(); 158 void purple_connections_init(); 159 void purple_connections_uninit(); 160 void* purple_connections_get_handle(); 161 } 162 } 163 else 164 { 165 extern( C ) nothrow 166 { 167 alias da_purple_connection_new = void function(PurpleAccount* account, gboolean regist, const(char)* password); 168 alias da_purple_connection_new_unregister = void function(PurpleAccount* account, const(char)* password, PurpleAccountUnregistrationCb cb, void* user_data); 169 alias da_purple_connection_destroy = void function(PurpleConnection* gc); 170 alias da_purple_connection_set_state = void function(PurpleConnection* gc, PurpleConnectionState state); 171 alias da_purple_connection_set_account = void function(PurpleConnection* gc, PurpleAccount* account); 172 alias da_purple_connection_set_display_name = void function(PurpleConnection* gc, const(char)* name); 173 alias da_purple_connection_set_protocol_data = void function(PurpleConnection* connection, void* proto_data); 174 alias da_purple_connection_get_state = PurpleConnectionState function(const(PurpleConnection)* gc); 175 alias da_purple_connection_get_account = PurpleAccount* function(const(PurpleConnection)* gc); 176 alias da_purple_connection_get_prpl = PurplePlugin* function(const(PurpleConnection)* gc); 177 alias da_purple_connection_get_password = const(char)* function(const(PurpleConnection)* gc); 178 alias da_purple_connection_get_display_name = const(char)* function(const(PurpleConnection)* gc); 179 alias da_purple_connection_get_protocol_data = void* function(const(PurpleConnection)* connection); 180 alias da_purple_connection_update_progress = void function(PurpleConnection* gc, const(char)* text, size_t step, size_t count); 181 alias da_purple_connection_notice = void function(PurpleConnection* gc, const(char)* text); 182 alias da_purple_connection_error = void function(PurpleConnection* gc, const(char)* reason); 183 alias da_purple_connection_error_reason = void function(PurpleConnection* gc, PurpleConnectionError reason, const(char)* description); 184 alias da_purple_connection_ssl_error = void function(PurpleConnection* gc, PurpleSslErrorType ssl_error); 185 alias da_purple_connection_error_is_fatal = gboolean function(PurpleConnectionError reason); 186 alias da_purple_connections_disconnect_all = void function(); 187 alias da_purple_connections_get_all = GList* function(); 188 alias da_purple_connections_get_connecting = GList* function(); 189 alias da_purple_connections_set_ui_ops = void function(PurpleConnectionUiOps* ops); 190 alias da_purple_connections_get_ui_ops = PurpleConnectionUiOps* function(); 191 alias da_purple_connections_init = void function(); 192 alias da_purple_connections_uninit = void function(); 193 alias da_purple_connections_get_handle = void* function(); 194 } 195 196 __gshared 197 { 198 da_purple_connection_new purple_connection_new; 199 da_purple_connection_new_unregister purple_connection_new_unregister; 200 da_purple_connection_destroy purple_connection_destroy; 201 da_purple_connection_set_state purple_connection_set_state; 202 da_purple_connection_set_account purple_connection_set_account; 203 da_purple_connection_set_display_name purple_connection_set_display_name; 204 da_purple_connection_set_protocol_data purple_connection_set_protocol_data; 205 da_purple_connection_get_state purple_connection_get_state; 206 da_purple_connection_get_account purple_connection_get_account; 207 da_purple_connection_get_prpl purple_connection_get_prpl; 208 da_purple_connection_get_password purple_connection_get_password; 209 da_purple_connection_get_display_name purple_connection_get_display_name; 210 da_purple_connection_get_protocol_data purple_connection_get_protocol_data; 211 da_purple_connection_update_progress purple_connection_update_progress; 212 da_purple_connection_notice purple_connection_notice; 213 da_purple_connection_error purple_connection_error; 214 da_purple_connection_error_reason purple_connection_error_reason; 215 da_purple_connection_ssl_error purple_connection_ssl_error; 216 da_purple_connection_error_is_fatal purple_connection_error_is_fatal; 217 da_purple_connections_disconnect_all purple_connections_disconnect_all; 218 da_purple_connections_get_all purple_connections_get_all; 219 da_purple_connections_get_connecting purple_connections_get_connecting; 220 da_purple_connections_set_ui_ops purple_connections_set_ui_ops; 221 da_purple_connections_get_ui_ops purple_connections_get_ui_ops; 222 da_purple_connections_init purple_connections_init; 223 da_purple_connections_uninit purple_connections_uninit; 224 da_purple_connections_get_handle purple_connections_get_handle; 225 } 226 }